setTimeout(() => {
  console.log(1)
}, 0)

Promise.resolve().then(function () {
  console.log(2)
})

console.log(3)

// 3 2 1
// 首先全局函数执行，碰到第一个计时器，放到演示队列
// 然后碰到第二个函数，promise 放到微队列
// 最后碰到打印3，就先执行它，这时主线程才走完，然后看队列中的任务
// 微任务优先，就先打印2，延时队列优先级低于微任务，就最后打印